<?php
namespace Bundle\ModuleBundle\Interfaces;

/**
 * Интерфейс, реализуемый классам описывающими модули.
 * Используется при инициализации модудей после их нахождения.
 */
interface PluginDescriptionInterface
{
    /**
     * Получение объекта модуля, с указанием конфигурации
     * @return \Bundle\ConfigurationBundle\Configuration
     */
    public function getInstance(\Bundle\ModuleBundle\Module $module, \Bundle\ConfigurationBundle\Configuration $configuration);

    
    /**
     * Получение базового конфига плагина
     * @return array
     */
    public function getDefaultConfiguration();


    /**
     * Получение названия модуля
     * @return string
     */
    public function getName();

    /**
     * Получение алиасов модуля
     */
    public function getAliases();

    /**
     * Первоначальная загрузка описания модуля, выполняется перед занесением в
     * список модулей
     */
    public function boot();
}
?>
